import axios from '@/api/gangdiedao-uni-axios';
import qs from 'qs';
import baseURL from '@/config.js';
import baseURL2 from '@/config2.js';

/************************以下是公用方法************************/
//根据参数获取不同格式的日期字符串
function dateFormat(flag){
  var date = new Date();
  var year = date.getFullYear();
  var month = date.getMonth() + 1 < 10 ? 
                '0' + (date.getMonth() + 1) : date.getMonth()+ 1;
  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
  var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  var rtn="";
  if(flag=="small"){
    rtn=year + '-' +month + '-' + day;
  }
  if(flag=="big"){
    rtn=year + '-' +month + '-' + day+' '+hours+":"+minutes+":"+seconds;
  }
  return rtn;
}
//获取参数时间字符串30分钟之前的时间字符串（参数必须满足 "yyyyy-MM-dd HH:mm:ss"）
function getBefore30(timeStr) {
	//将输入的时间字符串转换为Date对象
	const date = new Date(timeStr);
	//减去30分钟（30 * 60 * 1000毫秒）
	date.setTime(date.getTime() - 30 * 60 * 1000);
	//格式化为"yyyy-MM-dd HH:mm:ss"
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0');
	const day = String(date.getDate()).padStart(2, '0');
	const hours = String(date.getHours()).padStart(2, '0');
	const minutes = String(date.getMinutes()).padStart(2, '0');
	const seconds = String(date.getSeconds()).padStart(2, '0');
	return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
//回退到上一页
function pageBack(){
	uni.navigateBack();
}
//上传文件（包括图片或pdf）
async function uploadFile(formData){
	let access_token=getApp().globalData.access_token;
	return await axios.post(baseURL + "/uploadImg/uploadFileNew",  //url部分 
													formData,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Authorization': access_token,
															'content-type': 'multipart/form-data',
														}
													}
	);
}
//预览图片
function imgPreview(imgList,index){
	console.log("预览图片方法集合与索引位置==",imgList,index); //由于参数是附件集合，因此需要只保留图片文件
	let imgArr=[];
	for(var i=0;i<imgList.length;i++){
		imgArr.push(imgList[i].url);
	}
	console.log("预览图片数组与索引位置==",imgArr,index);
	uni.previewImage({
		indicator:"number",
		loop:true,
		current: index,
		urls: imgArr
	})
}
//判断当前user是否拥有p权限
function roleMsg(user,p){
	var rtn=false;
	var fun_list=user.fun_list;
	var b=false;
	for(var i=0;i<fun_list.length;i++){
		if(fun_list[i].fun_code.indexOf(p)!=-1){
			rtn=true;
			break;
		}
	}
	if(!rtn){
		uni.showModal({
			title: '提示',
			content: '您没有当前功能的权限！',
			showCancel:false,
			success: function (res) {
				if(res.confirm){} 
			}
		}); //uni.showModal结束
	}
	return rtn;
}
/************************以上是公用方法************************/
 
/************************以下是业务方法************************/
//（测试用）init页根据手机号进行登录
async function loginByMobile(mobile) {
	console.log("根据手机号登录接口参数==",mobile);
	return await axios.post(baseURL + "/login/testLogin?mobile="+mobile,  //url部分 
													//obj, //对象方式
													//qs.stringify(obj), //字符串方式  参数部分 
													{ //headers部分
														headers: {
															'content-type': 'application/json',
														}
													}
	);
}
//init页根据code进行登录
async function loginByMPCode(code) {
	return await axios.post(baseURL + "/login/loginByMPCode?code="+code,  //url部分 
													//obj,
													//qs.stringify(obj), //参数部分 
													{ //headers部分
														headers: {
															'content-type': 'application/json',
														}
													}
	);
}

/*********订车相关业务********/
//创建用车申请单
async function addAccessTask(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessTask",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//修改用车申请单（修改还车里程，由车队管理员调用  2024-04补充）
async function editAccessTask(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.put(baseURL + "/accessTask",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//获取车辆列表
async function getCarList(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/car/getCarList",  //url部分
													//obj,
													qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															//'content-type': 'application/json',
															'content-type': 'application/x-www-form-urlencoded',
														}
													}
	);
}
//根据id获取车辆信息
async function getCar(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/car/getCar",  //url部分
													//obj,
													qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															//'content-type': 'application/json',
															'content-type': 'application/x-www-form-urlencoded',
														}
													}
	);
}
//修改车辆信息中的累计里程（修改还车里程，由车队管理员调用  2024-04补充）
async function updateCar(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/car/updateCar",  //url部分
													//obj,
													qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															//'content-type': 'application/json',
															'content-type': 'application/x-www-form-urlencoded',
														}
													}
	);
}
//获取部门审核人
async function getLoginList(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/login/getLoginList",  //url部分 
													//obj,
													qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/x-www-form-urlencoded',
														}
													}
	);
}
//获取申请单列表（带角色权限获取申请单）
async function listTask(queryParams) {
	let cookie=getApp().globalData.cookie;
	return await axios.get(baseURL + "/accessTask/list", //url部分
													{ //（注意：get方式传参部分与headers部分是在一起的，在一个对象中）
														headers: { //headers部分
															'Cookie': cookie,
															'content-type': 'application/x-www-form-urlencoded',
														},
														params: queryParams, //参数部分
													}
	);
}
//获取我创建的用车申请单，获取我参与的申请单（任务）列表（暂时不用了）
async function listMyTask(queryParams) {
	let cookie=getApp().globalData.cookie;
	return await axios.get(baseURL + "/accessTask/my_job_list", //url部分
													{ //（注意：get方式传参部分与headers部分是在一起的，在一个对象中）
														headers: { //headers部分
															'Cookie': cookie,
															'content-type': 'application/x-www-form-urlencoded',
														},
														params: queryParams,
													}
	);
}
//查询申请单详细
async function getTask(accessTaskId) {
	let cookie=getApp().globalData.cookie;
	return await axios.get(baseURL + "/accessTask/"+accessTaskId, //url部分
													{ //（注意：get方式传参部分与headers部分是在一起的，在一个对象中）
														headers: { //headers部分
															'Cookie': cookie,
															'content-type': 'application/x-www-form-urlencoded',
														},
													}
	);
}
//获取申请单参与人员列表
async function getPersonList(accessTaskId) {
	let cookie=getApp().globalData.cookie;
	return await axios.get(baseURL + "/accessJob/list", //url部分
													{ //（注意：get方式传参部分与headers部分是在一起的，在一个对象中）
														headers: { //headers部分
															'Cookie': cookie,
															'content-type': 'application/x-www-form-urlencoded',
														},
														params: { //参数部分
															accessTaskId:accessTaskId,
														},
													}
	);
}
//获取申请单流程进度
async function listProgress(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.get(baseURL + "/accessEvent/list", //url部分
													{ //（注意：get方式传参部分与headers部分是在一起的，在一个对象中）
														headers: { //headers部分
															'Cookie': cookie,
															'content-type': 'application/x-www-form-urlencoded',
														},
														params: obj,//参数部分
													}
	);
}
//流程进度（部门审核）
async function locApproveEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/loc_approve_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（部门车管指派司机）
async function appointDriverEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/appoint_driver_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（车队审核）
async function carApproveEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/car_approve_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（取钥匙）
async function getKeyEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/get_key_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（使用车辆）
async function startCarEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/start_car_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（归还车辆）
async function endCarEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/end_car_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（还钥匙）
async function putKeyEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/put_key_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（车队还车审核：收车）
async function closeCarEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/close_car_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//流程进度（用车部门事故确认）
async function accidentConfirmEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/accident_confirm_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//小按钮操作（申请人撤回）
async function cancelEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/cancel_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//小按钮操作（催审）
async function urgeEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/urge_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//小按钮操作（延时取钥匙）
async function getKeyDelayEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/get_key_delay_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//小按钮操作（终止流程）
async function revokeEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/revoke_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//小按钮操作（延时流程）（指的是还车前出事故了，暂时还不上了，先延时一下，  先写上，使用时待研究）
async function delayEvent(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/accessEvent/delay_event",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}

//智能柜门相关操作
//获取钥匙箱列表
async function getKeyBoxList(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/keyBox/getKeyBoxList",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}
//打开指定的钥匙柜
async function sendMQTTMsg(obj) {
	let cookie=getApp().globalData.cookie;
	return await axios.post(baseURL + "/keyBox/SendMQTTMsg",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}

/************************以上是业务方法************************/
//测试OCR识别
async function testOcr(key,url) {
	// return await axios.get("https://api.itapi.cn/api/ocr/v2?key="+key+"&data="+url, //url部分
	// 												{ //（注意：get方式传参部分与headers部分是在一起的，在一个对象中）
	// 													headers: { //headers部分
	// 														'content-type': 'application/x-www-form-urlencoded',
	// 													},
	// 												}
	// );
}
//测试ios打开相册
function testIos() {
	let cookie=getApp().globalData.cookie;
	var obj={};
	return axios.post(baseURL + "/testH5/pageRefresh",  //url部分
													obj,
													//qs.stringify(obj), //参数部分  （注意：post方式传参部分与headers部分是分开的）
													{ //headers部分
														headers: {
															'Cookie': cookie,
															'content-type': 'application/json',
														}
													}
	);
}

module.exports = { 
	//公用方法
	dateFormat:dateFormat, //获取不同格式的日期字符串
	getBefore30:getBefore30, //获取参数时间字符串30分钟之前的时间字符串（参数必须满足 "yyyyy-MM-dd HH:mm:ss"）
	pageBack:pageBack, //回退到上一页
	uploadFile:uploadFile, //上传文件（包括图片或pdf）
	imgPreview:imgPreview, //预览图片
	roleMsg:roleMsg, ////判断当前user是否拥有参数p的权限
	
	//init页及首页面方法
	loginByMobile:loginByMobile, //（测试用）init页根据手机号进行登录
	loginByMPCode:loginByMPCode, //根据code进行微信登录
	
	//订车相关业务
	addAccessTask:addAccessTask, //创建用车申请单
	editAccessTask:editAccessTask, //修改用车申请单（修改还车里程，由车队管理员调用  2024-04补充）
	getCarList:getCarList, //获取车辆列表
	getCar:getCar, //根据id获取车辆信息
	updateCar:updateCar, //修改车辆信息中的累计里程（修改还车里程，由车队管理员调用  2024-04补充）
	getLoginList:getLoginList, //取部门审核人
	listTask:listTask, //获取申请单列表（带角色权限获取申请单）
	listMyTask:listMyTask, //获取我创建的用车申请单，获取我参与的申请单（任务）列表 （暂时不用了）
	getTask:getTask, //查询申请单详细
	getPersonList:getPersonList, //获取申请单参与人员列表
	
	//审核流程 相关业务方法
	listProgress:listProgress, //获取申请单流程进度
	locApproveEvent:locApproveEvent, //流程进度（部门审核）
	appointDriverEvent:appointDriverEvent, ////流程进度（部门车管指派司机）
	carApproveEvent:carApproveEvent, //流程进度（车队审核）
	getKeyEvent:getKeyEvent, //流程进度（取钥匙）
	startCarEvent:startCarEvent, //流程进度（使用车辆）
	endCarEvent:endCarEvent, //流程进度（归还车辆）
	putKeyEvent:putKeyEvent, //流程进度（还钥匙）
	closeCarEvent:closeCarEvent, //流程进度（车队还车审核：收车）
	accidentConfirmEvent:accidentConfirmEvent, //流程进度（用车部门事故确认）
	
	//流程中的小按钮操作
	cancelEvent:cancelEvent, //小按钮操作（申请人撤回）
	urgeEvent:urgeEvent, //催审
	getKeyDelayEvent:getKeyDelayEvent, //延时取钥匙
	revokeEvent:revokeEvent, //终止流程
	delayEvent:delayEvent, //延时还车
	 
	//智能柜门相关操作
	getKeyBoxList:getKeyBoxList, //获取钥匙箱列表
	sendMQTTMsg:sendMQTTMsg, //打开指定的钥匙柜
	
	//测试用
	testOcr:testOcr, //测试OCR
	testIos:testIos, //测试ios打开相册
}
